/************************************************************************

								Heroes IV
					  Copyright 2002, The 3DO Company

	------------------------------------------------------------------
  						       score_computer.h

	$Header: /game/score_computer.h $

	$NoKeywords: $

 ************************************************************************/
#ifndef SCORE_COMPUTER_H_INCLUDED
#define SCORE_COMPUTER_H_INCLUDED

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

// kill the 255+ character identifier warning.  Templates tend to exceed that easily.
#pragma warning( disable: 4786 )

#include <string>

class	t_adventure_map;
enum	t_creature_type;
class	t_hero;
class	t_player;

// ---------------------------------------------------------------------
// struct to contain all score calculations
// ---------------------------------------------------------------------
struct t_final_scores
{
	int					army_size_points;
	int					artifact_points;
	int					artifacts_collected;
	int					battles_won_points;
	int					battles_won;
	t_creature_type		creature_index;
	int					days;
	int					exploration_points;
	int					final_score;
	std::string			hero_name;
	t_player *			human_player;
	int					main_hero_points;
	int					map_difficulty_percentage;
	float				percent_explored;
	int					player_difficulty_percentage;
	int					quest_points;
	int					quests_completed;
	std::string			rank_name;
	int					resource_value;
	t_hero const *		strongest_hero;
	int					time_points;
	int					total_creature_gold_value;
	int					town_count;
	int					town_points;
	int					wealth_points;
};



static const int k_creature_score_range = 1000;		// The highest score assumed for deciding which creature/rank to assign
static const int k_campaign_score_multiplier = 5;	// Arbitrary multiplier to make campaign scores bigger than single maps


void calculate_scores( t_adventure_map const & map, int winning_team,
					   t_final_scores & score_data );

t_creature_type get_rank_creature( int score, int max_score );

#endif // SCORE_COMPUTER_H_INCLUDED